home *** CD-ROM | disk | FTP | other *** search
/ Skunkware 98 / Skunkware 98.iso / src / interp / perl5.005.tar.gz / perl5.005.tar / perl5.005 / Makefile.SH < prev    next >
Linux/UNIX/POSIX Shell Script  |  1998-07-19  |  20KB  |  647 lines

  1. #! /bin/sh
  2. case $CONFIG in
  3. '')
  4.     if test -f config.sh; then TOP=.;
  5.     elif test -f ../config.sh; then TOP=..;
  6.     elif test -f ../../config.sh; then TOP=../..;
  7.     elif test -f ../../../config.sh; then TOP=../../..;
  8.     elif test -f ../../../../config.sh; then TOP=../../../..;
  9.     else
  10.         echo "Can't find config.sh."; exit 1
  11.     fi
  12.     . $TOP/config.sh
  13.     ;;
  14. esac
  15. : This forces SH files to create target in same directory as SH file.
  16. : This is so that make depend always knows where to find SH derivatives.
  17. case "$0" in
  18. */*) cd `expr X$0 : 'X\(.*\)/'` ;;
  19. esac
  20.  
  21. case "$d_dosuid" in
  22. *define*) suidperl='suidperl' ;;
  23. *) suidperl='';;
  24. esac
  25.  
  26. linklibperl='$(LIBPERL)'
  27. shrpldflags='$(LDDLFLAGS)'
  28. ldlibpth=''
  29. case "$useshrplib" in
  30. true)
  31.     # Prefix all runs of 'miniperl' and 'perl' with 
  32.     # $ldlibpth so that ./perl finds *this* libperl.so.
  33.     ldlibpth="LD_LIBRARY_PATH=`pwd`:$LD_LIBRARY_PATH"
  34.  
  35.     pldlflags="$cccdlflags"
  36.     # NeXT-4 specific stuff.  Can't we do this in the hint file?
  37.     case "${osname}${osvers}" in
  38.     next4*)
  39.         ld=libtool
  40.         lddlflags="-dynamic -undefined warning -framework System \
  41.         -compatibility_version 1 -current_version $patchlevel \
  42.         -prebind -seg1addr 0x27000000 -install_name \$(shrpdir)/\$@"
  43.         # NeXT uses a different name.
  44.         ldlibpth="DYLD_LIBRARY_PATH=`pwd`:$DYLD_LIBRARY_PATH"
  45.         ;;
  46.     os2*)    # OS/2 doesn't need anything special for LD_LIBRARY_PATH.
  47.         ldlibpth=''
  48.         ;;
  49.     sunos*|freebsd[23]*|netbsd*)
  50.         linklibperl="-lperl"
  51.         ;;
  52.     aix*)
  53.         shrpldflags="-H512 -T512 -bhalt:4 -bM:SRE -bE:perl.exp"
  54.         case "$osvers" in
  55.         3*)
  56.             shrpldflags="$shrpldflags -e _nostart $ldflags $libs $cryptlib"
  57.             ;;
  58.         *)
  59.             shrpldflags="$shrpldflags -b noentry $ldflags $libs $cryptlib"
  60.             ;;
  61.         esac
  62.         aixinstdir=`pwd | sed 's/\/UU$//'`
  63.         linklibperl="-L $archlibexp/CORE -L $aixinstdir -lperl"
  64.         ;;
  65.     hpux10*)
  66.         linklibperl="-L `pwd | sed 's/\/UU$//'` -Wl,+b$archlibexp/CORE -lperl"
  67.         ;;
  68.     esac
  69.     ;;
  70. *)    pldlflags=''
  71.     ;;
  72. esac
  73.  
  74. : Prepare dependency lists for Makefile.
  75. dynamic_list=' '
  76. for f in $dynamic_ext; do
  77.     : the dependency named here will never exist
  78.       base=`echo "$f" | sed 's/.*\///'`
  79.     dynamic_list="$dynamic_list lib/auto/$f/$base.$dlext"
  80. done
  81.  
  82. static_list=' '
  83. for f in $static_ext; do
  84.     base=`echo "$f" | sed 's/.*\///'`
  85.     static_list="$static_list lib/auto/$f/$base\$(LIB_EXT)"
  86. done
  87.  
  88. nonxs_list=' '
  89. for f in $nonxs_ext; do
  90.     base=`echo "$f" | sed 's/.*\///'`
  91.     nonxs_list="$nonxs_list ext/$f/pm_to_blib"
  92. done
  93.  
  94. echo "Extracting Makefile (with variable substitutions)"
  95. $spitshell >Makefile <<!GROK!THIS!
  96. # Makefile.SH
  97. # This file is derived from Makefile.SH.  Any changes made here will
  98. # be lost the next time you run Configure.
  99. #  Makefile is used to generate $firstmakefile.  The only difference
  100. #  is that $firstmakefile has the dependencies filled in at the end.
  101. #
  102. #
  103. # I now supply perly.c with the kits, so don't remake perly.c without byacc
  104. BYACC = $byacc
  105. CC = $cc
  106. LD = $ld
  107.  
  108. LDFLAGS = $ldflags
  109. CLDFLAGS = $ldflags
  110.  
  111. SMALL = $small
  112. LARGE = $large $split
  113. mallocsrc = $mallocsrc
  114. mallocobj = $mallocobj
  115. LNS = $lns
  116. RMS = rm -f
  117. ranlib = $ranlib
  118.  
  119. # The following are mentioned only to make metaconfig include the
  120. # appropriate questions in Configure.  If you want to change these,
  121. # edit config.sh instead, or specify --man1dir=/wherever on
  122. # installman commandline.
  123. bin = $installbin
  124. scriptdir = $scriptdir
  125. shrpdir = $archlibexp/CORE
  126. privlib = $installprivlib
  127. man1dir = $man1dir
  128. man1ext = $man1ext
  129. man3dir = $man3dir
  130. man3ext = $man3ext
  131.  
  132. # The following are used to build and install shared libraries for
  133. # dynamic loading.
  134. LDDLFLAGS = $lddlflags
  135. SHRPLDFLAGS = $shrpldflags
  136. CCDLFLAGS = $ccdlflags
  137. DLSUFFIX = .$dlext
  138. PLDLFLAGS = $pldlflags
  139. LIBPERL = $libperl
  140. LLIBPERL= $linklibperl
  141. SHRPENV = $shrpenv
  142.  
  143. # The following is used to include the current directory in
  144. # LD_LIBRARY_PATH if you are building a shared libperl.so.
  145. LDLIBPTH = $ldlibpth
  146.  
  147. dynamic_ext = $dynamic_list
  148. static_ext = $static_list
  149. nonxs_ext = $nonxs_list
  150. ext = \$(dynamic_ext) \$(static_ext) \$(nonxs_ext)
  151. DYNALOADER = lib/auto/DynaLoader/DynaLoader\$(LIB_EXT)
  152.  
  153. libs = $libs $cryptlib
  154.  
  155. public = perl $suidperl utilities translators
  156.  
  157. shellflags = $shellflags
  158.  
  159. # This is set to  MAKE=$make if your $make command doesn't
  160. # do it for you.
  161. $make_set_make
  162.  
  163. # These variables may need to be manually set for non-Unix systems.
  164. AR = $ar
  165. EXE_EXT = $_exe
  166. LIB_EXT = $_a
  167. OBJ_EXT = $_o
  168. PATH_SEP = $p_
  169.  
  170. FIRSTMAKEFILE = $firstmakefile
  171.  
  172. # Any special object files needed by this architecture, e.g. os2/os2.obj
  173. ARCHOBJS = $archobjs
  174.  
  175. .SUFFIXES: .c \$(OBJ_EXT)
  176.  
  177. # grrr
  178. SHELL = $sh
  179.  
  180. # how to tr(anslate) newlines
  181. TRNL = '$trnl'
  182.  
  183. !GROK!THIS!
  184.  
  185. ## In the following dollars and backticks do not need the extra backslash.
  186. $spitshell >>Makefile <<'!NO!SUBS!'
  187.  
  188. CCCMD = `sh $(shellflags) cflags $(LIBPERL) $@`
  189.  
  190. private = preplibrary lib/ExtUtils/Miniperl.pm lib/Config.pm
  191.  
  192. # Files to be built with variable substitution before miniperl
  193. # is available.
  194. sh = Makefile.SH cflags.SH config_h.SH makeaperl.SH makedepend.SH \
  195.     makedir.SH perl_exp.SH writemain.SH
  196.  
  197. shextract = Makefile cflags config.h makeaperl makedepend \
  198.     makedir perl.exp writemain
  199.  
  200. # Files to be built with variable substitution after miniperl is
  201. # available.  Dependencies handled manually below (for now).
  202.  
  203. pl = pod/pod2html.PL pod/pod2latex.PL pod/pod2man.PL pod/pod2text.PL
  204.  
  205. plextract = pod/pod2html pod/pod2latex pod/pod2man pod/pod2text
  206.  
  207. addedbyconf = UU $(shextract) $(plextract) pstruct
  208.  
  209. h1 = EXTERN.h INTERN.h XSUB.h av.h config.h cop.h cv.h dosish.h
  210. h2 = embed.h form.h gv.h handy.h hv.h keywords.h mg.h op.h
  211. h3 = opcode.h patchlevel.h perl.h perly.h pp.h proto.h regcomp.h
  212. h4 = regexp.h scope.h sv.h unixish.h util.h iperlsys.h thread.h
  213. h5 = bytecode.h byterun.h
  214. h = $(h1) $(h2) $(h3) $(h4) $(h5)
  215.  
  216. c1 = $(mallocsrc) av.c scope.c op.c doop.c doio.c dump.c hv.c mg.c byterun.c
  217. c2 = perl.c perly.c pp.c pp_hot.c pp_ctl.c pp_sys.c regcomp.c regexec.c
  218. c3 = gv.c sv.c taint.c toke.c util.c deb.c run.c universal.c globals.c perlio.c
  219.  
  220. c = $(c1) $(c2) $(c3) miniperlmain.c perlmain.c
  221.  
  222. obj1 = $(mallocobj) gv$(OBJ_EXT) toke$(OBJ_EXT) perly$(OBJ_EXT) op$(OBJ_EXT) regcomp$(OBJ_EXT) dump$(OBJ_EXT) util$(OBJ_EXT) mg$(OBJ_EXT) byterun$(OBJ_EXT)
  223. obj2 = hv$(OBJ_EXT) av$(OBJ_EXT) run$(OBJ_EXT) pp_hot$(OBJ_EXT) sv$(OBJ_EXT) pp$(OBJ_EXT) scope$(OBJ_EXT) pp_ctl$(OBJ_EXT) pp_sys$(OBJ_EXT)
  224. obj3 = doop$(OBJ_EXT) doio$(OBJ_EXT) regexec$(OBJ_EXT) taint$(OBJ_EXT) deb$(OBJ_EXT) universal$(OBJ_EXT) globals$(OBJ_EXT) perlio$(OBJ_EXT)
  225.  
  226. obj = $(obj1) $(obj2) $(obj3) $(ARCHOBJS)
  227.  
  228. # Once perl has been Configure'd and built ok you build different
  229. # perl variants (Debugging, Embedded, Multiplicity etc) by saying:
  230. #    make clean; make LIBPERL=libperl<type>.a
  231. # where <type> is some combination of 'd' and(or) 'e' or 'm'.
  232. # See cflags to understand how this works.
  233. #
  234. # This mechanism is getting clunky and might not even work any more.
  235. # EMBEDDING is on by default, and MULTIPLICITY doesn't work.
  236. #
  237.  
  238. lintflags = -hbvxac
  239.  
  240. .c$(OBJ_EXT):
  241.     $(CCCMD) $(PLDLFLAGS) $*.c
  242.  
  243. all: $(FIRSTMAKEFILE) miniperl $(private) $(plextract) $(public) $(dynamic_ext) $(nonxs_ext)
  244.     @echo " ";
  245.     @echo "    Everything is up to date. 'make test' to run test suite."
  246.  
  247. compile: all
  248.     echo "testing compilation" > testcompile;
  249.     cd utils;  $(MAKE) compile;
  250.     cd x2p; $(MAKE) compile; 
  251.     cd pod; $(MAKE) compile;
  252.  
  253. translators:    miniperl lib/Config.pm FORCE
  254.     @echo " "; echo "    Making x2p stuff"; cd x2p; $(LDLIBPTH) $(MAKE) all
  255.  
  256. utilities:    miniperl lib/Config.pm FORCE
  257.     @echo " "; echo "    Making utilities"; cd utils; $(LDLIBPTH) $(MAKE) all
  258.  
  259.  
  260. # This is now done by installman only if you actually want the man pages.
  261. #    @echo " "; echo "    Making docs"; cd pod; $(MAKE) all;
  262.  
  263. # Phony target to force checking subdirectories.
  264. # Apparently some makes require an action for the FORCE target.
  265. FORCE:
  266.     @sh -c true
  267.  
  268. miniperlmain$(OBJ_EXT): miniperlmain.c
  269.     $(CCCMD) $(PLDLFLAGS) $*.c
  270.  
  271. perlmain.c: miniperlmain.c config.sh $(FIRSTMAKEFILE)
  272.     sh writemain $(DYNALOADER) $(static_ext) > tmp
  273.     sh mv-if-diff tmp perlmain.c
  274.  
  275. perlmain$(OBJ_EXT): perlmain.c
  276.     $(CCCMD) $(PLDLFLAGS) $*.c
  277.  
  278. # The file ext.libs is a list of libraries that must be linked in
  279. # for static extensions, e.g. -lm -lgdbm, etc.  The individual
  280. # static extension Makefile's add to it.
  281. ext.libs: $(static_ext)
  282.     -@test -f ext.libs || touch ext.libs
  283.  
  284. !NO!SUBS!
  285.  
  286. # How to build libperl.  This is still rather convoluted.
  287. # Load up custom Makefile.SH fragment for shared loading and executables:
  288. if test -r $osname/Makefile.SHs ; then
  289.     . $osname/Makefile.SHs
  290.     $spitshell >>Makefile <<!GROK!THIS!
  291.  
  292. Makefile: $osname/Makefile.SHs
  293. !GROK!THIS!
  294. else
  295.     $spitshell >>Makefile <<'!NO!SUBS!'
  296. $(LIBPERL): $& perl$(OBJ_EXT) $(obj)
  297. !NO!SUBS!
  298.     case "$useshrplib" in
  299.     true)
  300.         $spitshell >>Makefile <<'!NO!SUBS!'
  301.     $(LD) $(SHRPLDFLAGS) -o $@ perl$(OBJ_EXT) $(obj)
  302. !NO!SUBS!
  303.         case "$osname" in
  304.         aix)
  305.             $spitshell >>Makefile <<'!NO!SUBS!'
  306.     rm -f libperl$(OBJ_EXT)
  307.     mv $@ libperl$(OBJ_EXT)
  308.     $(AR) qv $(LIBPERL) libperl$(OBJ_EXT)
  309. !NO!SUBS!
  310.             ;;
  311.         esac
  312.         ;;
  313.     *)
  314.         $spitshell >>Makefile <<'!NO!SUBS!'
  315.     rm -f $(LIBPERL)
  316.     $(AR) rcu $(LIBPERL) perl$(OBJ_EXT) $(obj)
  317.     @$(ranlib) $(LIBPERL)
  318. !NO!SUBS!
  319.         ;;
  320.     esac
  321.     $spitshell >>Makefile <<'!NO!SUBS!'
  322.  
  323. # How to build executables.
  324.  
  325. # The $& notation tells Sequent machines that it can do a parallel make,
  326. # and is harmless otherwise.
  327. # The miniperl -w -MExporter line is a basic cheap test to catch errors
  328. # before make goes on to run preplibrary and then MakeMaker on extensions.
  329. # This is very handy because later errors are often caused by miniperl
  330. # build problems but that's not obvious to the novice.
  331. # The Module used here must not depend on Config or any extensions.
  332.  
  333. miniperl: $& miniperlmain$(OBJ_EXT) $(LIBPERL)
  334.     $(LDLIBPTH) $(CC) $(LARGE) $(CLDFLAGS) -o miniperl miniperlmain$(OBJ_EXT) $(LLIBPERL) $(libs)
  335.     $(LDLIBPTH) ./miniperl -w -Ilib -MExporter -e 0 || $(MAKE) minitest
  336.  
  337. perl: $& perlmain$(OBJ_EXT) $(LIBPERL) $(DYNALOADER) $(static_ext) ext.libs
  338.     $(SHRPENV) $(LDLIBPTH) $(CC) $(LARGE) $(CLDFLAGS) $(CCDLFLAGS) -o perl perlmain$(OBJ_EXT) $(DYNALOADER) $(static_ext) $(LLIBPERL) `cat ext.libs` $(libs)
  339.  
  340. pureperl: $& perlmain$(OBJ_EXT) $(LIBPERL) $(DYNALOADER) $(static_ext) ext.libs
  341.     $(SHRPENV) $(LDLIBPTH) purify $(CC) $(LARGE) $(CLDFLAGS) $(CCDLFLAGS) -o pureperl perlmain$(OBJ_EXT) $(DYNALOADER) $(static_ext) $(LLIBPERL) `cat ext.libs` $(libs)
  342.  
  343. purecovperl: $& perlmain$(OBJ_EXT) $(LIBPERL) $(DYNALOADER) $(static_ext) ext.libs
  344.     $(SHRPENV) $(LDLIBPTH) purecov $(CC) $(LARGE) $(CLDFLAGS) $(CCDLFLAGS) -o purecovperl perlmain$(OBJ_EXT) $(DYNALOADER) $(static_ext) $(LLIBPERL) `cat ext.libs` $(libs)
  345.  
  346. quantperl: $& perlmain$(OBJ_EXT) $(LIBPERL) $(DYNALOADER) $(static_ext) ext.libs
  347.     $(SHRPENV) $(LDLIBPTH) quantify $(CC) $(LARGE) $(CLDFLAGS) $(CCDLFLAGS) -o quantperl perlmain$(OBJ_EXT) $(DYNALOADER) $(static_ext) $(LLIBPERL) `cat ext.libs` $(libs)
  348.  
  349. # This version, if specified in Configure, does ONLY those scripts which need
  350. # set-id emulation.  Suidperl must be setuid root.  It contains the "taint"
  351. # checks as well as the special code to validate that the script in question
  352. # has been invoked correctly.
  353.  
  354. suidperl: $& sperl$(OBJ_EXT) perlmain$(OBJ_EXT) $(LIBPERL) $(DYNALOADER) $(static_ext) ext.libs
  355.     $(SHRPENV) $(LDLIBPTH) $(CC) $(LARGE) $(CLDFLAGS) $(CCDLFLAGS) -o suidperl perlmain$(OBJ_EXT) sperl$(OBJ_EXT) $(DYNALOADER) $(static_ext) $(LLIBPERL) `cat ext.libs` $(libs)
  356.  
  357. !NO!SUBS!
  358.  
  359. fi
  360.  
  361. $spitshell >>Makefile <<'!NO!SUBS!'
  362.  
  363. sperl$(OBJ_EXT): perl.c perly.h patchlevel.h $(h)
  364.     $(RMS) sperl.c
  365.     $(LNS) perl.c sperl.c
  366.     $(CCCMD) -DIAMSUID sperl.c
  367.     $(RMS) sperl.c
  368.  
  369. # We have to call our ./makedir because Ultrix 4.3 make can't handle the line
  370. #    test -d lib/auto || mkdir lib/auto
  371. #
  372. preplibrary: miniperl lib/Config.pm $(plextract)
  373.     @sh ./makedir lib/auto
  374.     @echo "    AutoSplitting perl library"
  375.     $(LDLIBPTH) ./miniperl -Ilib -e 'use AutoSplit; \
  376.         autosplit_lib_modules(@ARGV)' lib/*.pm lib/*/*.pm
  377.  
  378. # Take care to avoid modifying lib/Config.pm without reason
  379. # (If trying to create a new port and having problems with the configpm script, 
  380. # try 'make minitest' and/or commenting out the tests at the end of configpm.)
  381. lib/Config.pm: config.sh miniperl configpm
  382.     $(LDLIBPTH) ./miniperl configpm tmp
  383.     sh mv-if-diff tmp $@
  384.  
  385. lib/ExtUtils/Miniperl.pm: miniperlmain.c miniperl minimod.pl lib/Config.pm
  386.     $(LDLIBPTH) ./miniperl minimod.pl > tmp
  387.     sh mv-if-diff tmp $@
  388.  
  389. lib/re.pm: ext/re/re.pm
  390.     rm -f $@
  391.     cat ext/re/re.pm > $@
  392.  
  393. $(plextract):    miniperl lib/Config.pm lib/re.pm
  394.     $(LDLIBPTH) ./miniperl -Ilib $@.PL
  395.     
  396. install: all install.perl install.man
  397.  
  398. install.perl:    all installperl
  399.     if [ -n "$(COMPILE)" ]; \
  400.     then \
  401.         cd utils; $(MAKE) compile; \
  402.         cd ../x2p; $(MAKE) compile; \
  403.         cd ../pod; $(MAKE) compile; \
  404.     else :; \
  405.     fi
  406.     $(LDLIBPTH) ./perl installperl
  407.  
  408. install.man:    all installman
  409.     $(LDLIBPTH) ./perl installman
  410.  
  411. # XXX Experimental. Hardwired values, but useful for testing.
  412. # Eventually Configure could ask for some of these values.
  413. install.html: all installhtml
  414.     $(LDLIBPTH) ./perl installhtml                   \
  415.       --podroot=. --podpath=. --recurse  \
  416.       --htmldir=$(privlib)/html     \
  417.       --htmlroot=$(privlib)/html    \
  418.       --splithead=pod/perlipc     \
  419.       --splititem=pod/perlfunc    \
  420.       --libpods=perlfunc:perlguts:perlvar:perlrun:perlop \
  421.       --verbose
  422.  
  423.  
  424. # I now supply perly.c with the kits, so the following section is
  425. # used only if you force byacc to run by saying
  426. #     make run_byacc
  427. # Since we patch up the byacc output, the perly.fixer script needs
  428. # to run with precisely the same version of byacc as I use.  You
  429. # normally shouldn't remake perly.[ch].
  430.  
  431. run_byacc:    FORCE
  432.     @ echo 'Expect' 113 shift/reduce and 1 reduce/reduce conflict
  433.     $(BYACC) -d perly.y
  434.     chmod 664 perly.c
  435.     sh $(shellflags) ./perly.fixer y.tab.c perly.c
  436.     sed -e 's/fprintf *( *stderr *,/PerlIO_printf(Perl_debug_log,/g' \
  437.         -e 's/y\.tab/perly/g' perly.c >perly.tmp && mv perly.tmp perly.c
  438.     echo 'extern YYSTYPE yylval;' >>y.tab.h
  439.     cmp -s y.tab.h perly.h && rm -f y.tab.h || mv y.tab.h perly.h
  440.     chmod 664 vms/perly_c.vms vms/perly_h.vms
  441.     perl vms/vms_yfix.pl perly.c perly.h vms/perly_c.vms vms/perly_h.vms
  442.  
  443. # We don't want to regenerate perly.c and perly.h, but they might
  444. # appear out-of-date after a patch is applied or a new distribution is
  445. # made.
  446. perly.c: perly.y
  447.     -@sh -c true
  448.  
  449. perly.h: perly.y
  450.     -@sh -c true
  451.  
  452. # No compat3.sym here since and including the 5.004_50.
  453. SYM  = global.sym interp.sym perlio.sym thread.sym
  454.  
  455. SYMH = perlvars.h thrdvar.h
  456.  
  457. # The following files are generated automatically
  458. #    keywords.h:    keywords.pl
  459. #    opcode.h:    opcode.pl
  460. #    embed.h:      embed.pl global.sym interp.sym
  461. #    byterun.h:    bytecode.pl
  462. #    byterun.c:    bytecode.pl
  463. #    lib/B/Asmdata.pm:    bytecode.pl
  464. #    regnodes.h:    regcomp.pl
  465. # The correct versions should be already supplied with the perl kit,
  466. # in case you don't have perl available.
  467. # To force them to run, type
  468. #    make regen_headers
  469. regen_headers:    FORCE
  470.     perl keywords.pl
  471.     perl opcode.pl
  472.     perl embed.pl
  473.     perl bytecode.pl
  474.     perl regcomp.pl
  475.  
  476. # Extensions:
  477. # Names added to $(dynamic_ext) or $(static_ext) or $(nonxs_ext) will
  478. # automatically get built.  There should ordinarily be no need to change
  479. # any of this part of makefile.
  480. #
  481. # The dummy dependency is a place holder in case $(dynamic_ext) or
  482. # $(static_ext) is empty.
  483. #
  484. # DynaLoader may be needed for extensions that use Makefile.PL.
  485.  
  486. $(DYNALOADER):    miniperl preplibrary FORCE
  487.     @$(LDLIBPTH) sh ext/util/make_ext static $@ MAKE=$(MAKE) LIBPERL_A=$(LIBPERL)
  488.  
  489. d_dummy $(dynamic_ext):    miniperl preplibrary $(DYNALOADER) FORCE
  490.     @$(LDLIBPTH) sh ext/util/make_ext dynamic $@ MAKE=$(MAKE) LIBPERL_A=$(LIBPERL)
  491.  
  492. s_dummy $(static_ext):    miniperl preplibrary $(DYNALOADER) FORCE
  493.     @$(LDLIBPTH) sh ext/util/make_ext static $@ MAKE=$(MAKE) LIBPERL_A=$(LIBPERL)
  494.  
  495. n_dummy $(nonxs_ext):    miniperl preplibrary $(DYNALOADER) FORCE
  496.     @$(LDLIBPTH) sh ext/util/make_ext nonxs $@ MAKE=$(MAKE) LIBPERL_A=$(LIBPERL)
  497.  
  498. clean:        _tidy _mopup
  499.  
  500. realclean:    _cleaner _mopup
  501.     @echo "Note that make realclean does not delete config.sh or Policy.sh"
  502.  
  503. clobber:    _cleaner _mopup
  504.     rm -f config.sh cppstdin Policy.sh
  505.  
  506. distclean:    clobber
  507.  
  508. # Do not 'make _mopup' directly.
  509. _mopup:
  510.     rm -f *$(OBJ_EXT) *$(LIB_EXT) all perlmain.c
  511.     rm -f perl.exp ext.libs
  512.     -rm -f perl.export perl.dll perl.libexp perl.map perl.def
  513.     rm -f perl suidperl miniperl $(LIBPERL)
  514.  
  515. # Do not 'make _tidy' directly.
  516. _tidy:
  517.     -cd pod; $(MAKE) clean
  518.     -cd utils; $(MAKE) clean
  519.     -cd x2p; $(MAKE) clean
  520.     -@for x in $(DYNALOADER) $(dynamic_ext) $(static_ext) $(nonxs_ext) ; do \
  521.     sh ext/util/make_ext clean $$x MAKE=$(MAKE) ; \
  522.     done
  523.     rm -f testcompile compilelog
  524.  
  525. # Do not 'make _cleaner' directly.
  526. _cleaner:
  527.     -cd os2; rm -f Makefile
  528.     -cd pod; $(MAKE) realclean
  529.     -cd utils; $(MAKE) realclean
  530.     -cd x2p; $(MAKE) realclean
  531.     -@for x in $(DYNALOADER) $(dynamic_ext) $(static_ext) $(nonxs_ext) ; do \
  532.     sh ext/util/make_ext realclean $$x MAKE=$(MAKE) ; \
  533.     done
  534.     rm -f *.orig */*.orig *~ */*~ core t/core t/c t/perl
  535.     rm -rf $(addedbyconf)
  536.     rm -f $(FIRSTMAKEFILE) $(FIRSTMAKEFILE).old
  537.     rm -f $(private)
  538.     rm -rf lib/auto
  539.     rm -f lib/.exists
  540.     rm -f h2ph.man pstruct
  541.     rm -rf .config
  542.     rm -f testcompile compilelog
  543.  
  544. # The following lint has practically everything turned on.  Unfortunately,
  545. # you have to wade through a lot of mumbo jumbo that can't be suppressed.
  546. # If the source file has a /*NOSTRICT*/ somewhere, ignore the lint message
  547. # for that spot.
  548.  
  549. lint: perly.c $(c)
  550.     lint $(lintflags) $(defs) perly.c $(c) > perl.fuzz
  551.  
  552. # Need to unset during recursion to go out of loop.
  553. # The README below ensures that the dependency list is never empty and
  554. # that when MAKEDEPEND is empty $(FIRSTMAKEFILE) doesn't need rebuilding.
  555.  
  556. MAKEDEPEND = Makefile makedepend
  557.  
  558. $(FIRSTMAKEFILE):    README $(MAKEDEPEND)
  559.     $(MAKE) depend MAKEDEPEND=
  560.  
  561. config.h: config_h.SH config.sh
  562.     $(SHELL) config_h.SH
  563.  
  564. # This is an AIXism.
  565. perl.exp: perl_exp.SH config.sh $(SYM) $(SYMH)
  566.     $(SHELL) perl_exp.SH
  567.  
  568. # When done, touch perlmain.c so that it doesn't get remade each time.
  569. depend: makedepend
  570.     sh ./makedepend MAKE=$(MAKE)
  571.     - test -s perlmain.c && touch perlmain.c
  572.     cd x2p; $(MAKE) depend
  573.  
  574. # Cannot postpone this until $firstmakefile is ready ;-)
  575. makedepend: makedepend.SH config.sh
  576.     sh ./makedepend.SH
  577.  
  578. test-prep: miniperl perl preplibrary utilities $(dynamic_ext) $(nonxs_ext)
  579.     cd t && (rm -f perl$(EXE_EXT); $(LNS) ../perl$(EXE_EXT) perl$(EXE_EXT))
  580.  
  581. test check: test-prep
  582.     cd t && $(LDLIBPTH) ./perl TEST </dev/tty
  583.  
  584. # For testing without a tty or controling terminal. See t/op/stat.t
  585. test-notty: test-prep
  586.     cd t && PERL_SKIP_TTY_TEST=1 $(LDLIBPTH) ./perl TEST
  587.  
  588. # Can't depend on lib/Config.pm because that might be where miniperl
  589. # is crashing.
  590. minitest: miniperl lib/re.pm
  591.     @echo "You may see some irrelevant test failures if you have been unable"
  592.     @echo "to build lib/Config.pm."
  593.     - cd t && (rm -f perl$(EXE_EXT); $(LNS) ../miniperl$(EXE_EXT) perl$(EXE_EXT)) \
  594.         && $(LDLIBPTH) ./perl TEST base/*.t comp/*.t cmd/*.t io/*.t op/*.t pragma/*.t </dev/tty
  595.  
  596. # Handy way to run perlbug -ok without having to install and run the
  597. # installed perlbug. We don't re-run the tests here - we trust the user.
  598. # Please *don't* use this unless all tests pass.
  599. # If you want to report test failures, use "make nok" instead.
  600. ok:    utilities
  601.     $(LBLIBPTH) ./perl -Ilib utils/perlbug -ok -s '(UNINSTALLED)'
  602.  
  603. okfile:    utilities
  604.     $(LBLIBPTH) ./perl -Ilib utils/perlbug -ok -s '(UNINSTALLED)' -F perl.ok
  605.  
  606. nok:    utilities
  607.     $(LBLIBPTH) ./perl -Ilib utils/perlbug -nok -s '(UNINSTALLED)'
  608.  
  609. clist:    $(c)
  610.     echo $(c) | tr ' ' $(TRNL) >.clist
  611.  
  612. hlist:  $(h)
  613.     echo $(h) | tr ' ' $(TRNL) >.hlist
  614.  
  615. shlist: $(sh)
  616.     echo $(sh) | tr ' ' $(TRNL) >.shlist
  617.  
  618. pllist: $(pl)
  619.     echo $(pl) | tr ' ' $(TRNL) >.pllist
  620.  
  621. Makefile: Makefile.SH ./config.sh
  622.     $(SHELL) Makefile.SH
  623.  
  624. distcheck: FORCE
  625.     perl '-MExtUtils::Manifest=&fullcheck' -e 'fullcheck()'
  626.  
  627. elc:    emacs/cperl-mode.elc
  628.  
  629. emacs/cperl-mode.elc: emacs/cperl-mode.el
  630.     -cd emacs; emacs -batch -q -no-site-file -f batch-byte-compile cperl-mode.el
  631.  
  632. etags:    emacs/cperl-mode.elc
  633.     sh emacs/ptags
  634.  
  635. # AUTOMATICALLY GENERATED MAKE DEPENDENCIES--PUT NOTHING BELOW THIS LINE
  636. # If this runs make out of memory, delete /usr/include lines.
  637. !NO!SUBS!
  638.  
  639. $eunicefix Makefile
  640. case `pwd` in
  641. *SH)
  642.     $rm -f ../Makefile
  643.     $ln Makefile ../Makefile
  644.     ;;
  645. esac
  646. $rm -f $firstmakefile
  647.